home *** CD-ROM | disk | FTP | other *** search
/ Turnbull China Bikeride / Turnbull China Bikeride - Disc 2.iso / BARNET / FREENET / BRODIE / INTERNET / !InternetD / c / syslog < prev    next >
Text File  |  1995-06-08  |  2KB  |  66 lines

  1. #include "inetd.h"
  2. #include "syslog.h"
  3. #include "oslib:osmodule.h"
  4.  
  5. static void syslog_exit(void)
  6. {
  7.         xosmodule_free(sys()->data.syslog);
  8. }
  9.  
  10. int syslog_init(void)
  11. {
  12.         sys()->data.syslog = osmodule_alloc(sizeof(struct syslog));
  13.         if (!sys()->data.syslog) return 0;
  14.         atexit(syslog_exit);
  15.         sys()->data.syslog->want_foreground = 0;
  16.         return 1;
  17. }
  18.  
  19. void syslog_udp(int s)
  20. {
  21.         struct sockaddr_in    sin;
  22.         int            size = 16;
  23.         int            result;
  24.  
  25.     if (sys()->data.syslog->want_foreground) return; /* defer */
  26.     result = recvfrom(s, sys()->data.syslog->buffer, SYSLOGSIZE, 0,
  27.         (struct sockaddr *)&sin, &size);
  28.     if (sin.sin_addr.s_addr != 0x0100007f) {
  29.             /* drop it on the floor */
  30.             result = 0;
  31.     }
  32.     if (result > 0) {
  33.             if (result >= SYSLOGSIZE) result = SYSLOGSIZE - 1;
  34.             sys()->data.syslog->buffer[result] = '\0';
  35.             sys()->data.syslog->want_foreground = 1;
  36.             ++(sys()->wimp_poll_word);
  37.     }
  38. }
  39.  
  40. #define SYSLOG_INTBUF (SYSLOGSIZE + 64)
  41.  
  42. void syslog(int lev, char *message, ...)
  43. {
  44.         static char         intbuf[SYSLOG_INTBUF+4];
  45.         FILE *f;
  46.         va_list        ap;
  47.  
  48.         f = fopen("<InternetD$Dir>.debugger", "a");
  49.         if (!f) return;
  50.         fprintf(f, "\n%4d ", lev);
  51.         va_start(ap, message);
  52.         vfprintf(f, message, ap);
  53.         va_end(ap);
  54.         fclose(f);
  55. }
  56.  
  57. void syslog_fg_data(inet_handler *ih)
  58. {
  59.         UNUSED(ih);
  60.  
  61.     if (sys()->data.syslog->want_foreground) {
  62.             syslog(0, "%s", sys()->data.syslog->buffer);
  63.             sys()->data.syslog->want_foreground = 0;
  64.     }
  65. }
  66.